/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_MEMPOLICY_H
#define _UAPI_LINUX_MEMPOLICY_H

#include <linux/errno.h>

enum {
	MPOL_DEFAULT = 0,
	MPOL_PREFERRED = 1,
	MPOL_BIND = 2,
	MPOL_INTERLEAVE = 3,
	MPOL_LOCAL = 4,
	MPOL_PREFERRED_MANY = 5,
	MPOL_MAX,
};

#define RECLAIM_UNMAP	(1<<2)
#define RECLAIM_WRITE	(1<<1)
#define RECLAIM_ZONE	(1<<0)

#define MPOL_F_MORON	(1 << 4)
#define MPOL_F_MOF	(1 << 3)
#define MPOL_F_SHARED  (1 << 0)

#define MPOL_F_NUMA_BALANCING	(1 << 13)
#define MPOL_F_RELATIVE_NODES	(1 << 14)
#define MPOL_F_STATIC_NODES	(1 << 15)

#define MPOL_MF_INTERNAL (1<<4)
#define MPOL_MF_LAZY	 (1<<3)
#define MPOL_MF_MOVE_ALL (1<<2)

#define MPOL_MF_MOVE	 (1<<1)
#define MPOL_MF_STRICT	(1<<0)

#define MPOL_F_MEMS_ALLOWED (1<<2)
#define MPOL_F_ADDR	(1<<1)
#define MPOL_F_NODE	(1<<0)

#define MPOL_MODE_FLAGS							\
	(MPOL_F_STATIC_NODES | MPOL_F_RELATIVE_NODES | MPOL_F_NUMA_BALANCING)

#define MPOL_MF_VALID	(MPOL_MF_STRICT | MPOL_MF_MOVE | MPOL_MF_MOVE_ALL)

#endif
